The present invention relates to cloud computing, and in particular, to a method and system for intelligently leveraging cloud-based computing resources.
In general, the concept of “cloud computing” refers to the utilization of a set of shared computing resources (e.g., servers) which are typically consolidated in one or more data center locations. A cloud-based computing resource is thought to execute or reside somewhere on the “cloud”, which may be an internal corporate network or the public Internet. From the perspective of an application developer or information technology administrator, cloud computing enables the development and deployment of applications that exhibit scalability (e.g., easily and dynamically increase or decrease resource utilization as needed), performance (e.g., execute efficiently and fast), and reliability (e.g., never, or at least rarely, fail), all without any regard for the nature or location of the underlying infrastructure.
A number of factors have given rise to an increase in the utilization of cloud computing resources. For example, advances in networking technologies have significantly improved resource connectivity while decreasing connectivity costs. Advances in virtualization technologies have increased the efficiency of computing hardware by improving scalability and making it possible to more closely match computing hardware resources to the requirements of a particular computing task. Additionally, virtualization technologies commonly deployed in cloud computing environments have improved application reliability by enabling failover policies and procedures that reduce or all together eliminate disruption due to an application or hardware failure.
Before a cloud computing resource can be accessed and/or utilized, typically a user must provision and/or configure the particular resource. For instance, in the case of a virtual server or virtual appliance, a user must configure the server or appliance and provision a physical server to execute the virtual server or appliance. FIG. 1 illustrates a typical cloud computing architecture including the logical components—collectively referred to herein as the cloud management module 10—utilized to provision and/or configure a virtual server or virtual appliance for use by a requesting user. As illustrated in FIG. 1, the cloud management module 10 includes a user interface component 12, a systems management component 14, and a provisioning component 16. The user interface component 12 may facilitate web-based access to various administrative functions thereby enabling the user to configure and provision the cloud-based resource using a conventional web browser application. For example, the user interface component 12 may operate in conjunction with a web/application server (not shown) and the services/resources catalog 18 to display to the user a list of resources or services that the user can provision and utilize, along with a list of commands (e.g., start, stop, suspend, list) that can be executed to operate on, or with, certain resources. The cloud-based resources may comprise, for example, a list of machine images corresponding to virtual servers that can be instantiated in the cloud. The systems management component 14 manages the available resources, including the physical servers. For example, after a user has uploaded a customized machine image or selected a pre-configured machine image during the initial provisioning stage, the systems management component 14 operates in conjunction with the provisioning tool 16 to generate the necessary commands for provisioning the virtual server on the appropriate physical server. When the cloud-based services are offered by a third-party, a monitoring and metering module 20 may be utilized to track the usage of the cloud so the resources utilized can be attributed to the appropriate resource consumer.
There are a number of problems with the existing tools and techniques for provisioning resources in a computing cloud. First, there are an increasing number of third-party service providers offering cloud computing services with different billing arrangements and no standard methods or techniques for configuring and provisioning the various services and/or resources. Consequently, a user seeking to provision, access and/or utilize two different cloud-based service offerings must become familiar with the various billing details, technical differences in the underlying services as well as the different administrative or management interfaces for the different service offerings. Additionally, conventional cloud management tools provide no easy way for a user to integrate remote cloud-based resources with existing corporate or enterprise infrastructure, including one or more locally-maintained clouds. Consequently, there exists a need for improved methods and systems for intelligently leveraging cloud computing resources.